package com.lzy.canal.register.consumer;


import com.lzy.canal.component.consumer.MysqlConsumer;

/**
 * 消息处理器注册器接口
 *
 */
public interface ConsumerRegister<T extends MysqlConsumer> {

    /**
     * 添加消息处理器
     *
     * @param schemaName    数据库名称
     * @param tableName     表名称
     * @param t 消息处理器
     * @return
     */
    ConsumerRegister add(String schemaName, String tableName, T t);

    /**
     * 消息处理注册中心获取消息处理器
     *
     * @param schemaName 数据库名称
     * @param tableName  表名称
     * @return
     */
    T getConsumer(String schemaName, String tableName);

    /**
     * key 生成方式
     *
     * @param schemaName 数据库名称
     * @param tableName  表名称
     * @return
     */
    default String getKey(String schemaName, String tableName) {
        return String.join(".", schemaName, tableName);
    }
}
